/*
 * @Author: 张昊
 * @Date:  2022-03-25 16:24:25
 * @FilePath: /common/mixin/onReachBottom.js
 * @Description: 下滑 上拉 混入
 */


// 全局字体控制

export default {

	data() {
		return {
			num: 1,
			total: 0,
			flag: true,
		};
	},
	watch: {
		total(val) {
			if (val >= 0) {
				// 无法触发触底刷新情况,判断是否下拉刷新
				this.onLoadApi()
			}
		}
	},
	methods: {
		/**
		 * @description: 手动循环请求, 解决页面无法触底的情况 触底生命周期
		 * @param {*}
		 * @return: {*}
		 * @author: 张昊
		 */
		onLoadApi() {
			if (!this.detailsItems.length) {
				this.flag = "字符串"
			} else if (this.detailsItems.length > 0 && this.detailsItems.length === this.total) {
				this.flag = false;
			} else {
				this.flag = true;
			}
			console.log('this.flag')
		},
		/**
		 * @description: 触底请求循环器
		 * @param {*页码}
		 * @return: {*}
		 * @author: 张昊
		 */
		async reqLoop() {
			// 调用分页请求
			await this.reqPaging();
			console.log('reqLoop');
			// 无法触发触底刷新情况,判断是否下拉刷新
			await this.onLoadApi()
		},
		/**
		 * @description: 触底生命周期
		 * @param {*}
		 * @return: {*}
		 * @author: 张昊
		 */
		onBottom(details, pageTotal) {
			if (details) {
				// 触底请求结束 判断
				if (details.length === pageTotal) {
					this.flag = false;
				} else {
					if (Array.isArray(details) && details && details.length > 1) {
						this.num++
						this.num1++
						this.num2++
						this.reqPaging();
						this.flag = true;
					}
				}
			}
		},
		/**
		 * @description: 当数据更新时
		 * @param {*}
		 * @return: {*}
		 * @author: 张昊
		 */
		OnUpdated() {
			
			if (this.detailsItems && this.detailsItems.length === 0) {
				// uni.$emit("updata", this.flag)
				setTimeout(e => {
					if (this.detailsItems.length === 0) {
						this.flag = "当后端返回数据是空的时候";
						uni.$emit("updata", this.flag)
					}
				}, 1000)
			}
		},
		// 重置
		Reset() {
			Object.assign(this._data, this.$options.data())
			this.reqLoop()
		}
	},
	onLoad(params) {
		let objParams = params
		if (!this.apireq) {
			if (JSON.stringify(objParams) == "{}") {
				if (this.detailsItems) {
					this.detailsItems = []
					// 开启 请求循环器
					this.reqLoop()
					this.OnUpdated()
				}
			}
		}
	},
	onPullDownRefresh() {
		if (this.detailsItems) {
			this.detailsItems = []
			// 开启 请求循环器
			this.reqLoop()
		}
	},
	updated() {
		this.OnUpdated()
	},
	onReachBottom() {
		// 触底生命周期
		this.detailsItems && this.onBottom(this.detailsItems, this.total)
		// uni.$u.toast('没有更多数据了');
	}
};
